// 封装axios
import axios from "axios"
import { ElMessage } from "element-plus";
import { logout } from "@/common";

const instance = axios.create({
    baseURL: "/api",
    timeout: 5000,
});

instance.interceptors.request.use(
    (config) => {
        // 判断有没有token，如果有，需要带上
        let token = localStorage.getItem("token");
        if (token) {
            if (config.headers) {
                config.headers["Authorization"] = token;
            }
        }
        return config;
    },
    (err) => Promise.reject(err)
);

instance.interceptors.response.use(
    (response) => {
        // 请求状态码是200进这个函数
        // 请求成功，但是业务失败的时候有提示
        // 判断 请求的 业务状态码不是 200
        const data = response.data as IResponse<any>;
        if (data.code === 401) {
            logout(undefined, () => {
                // 5. 提示用户
                ElMessage.error("token过期，请重新登录")
            })
        } else if (data.code !== 200) {
            ElMessage.error(data.message);
        }
        return response.data
    }, (err) => {
        // 请求状态码不是200进这个函数
        // 请求失败的提示
        ElMessage.error("请求失败，找工作人员" + err.message)
        Promise.reject(err)
    })

export default instance;